#!/bin/bash

# Install script for the Easy Darwin Streaming Server
# source release


echo;echo Installing Easy Darwin Streaming Server;echo

INSTALL_OS=`uname`

if [ $INSTALL_OS != "SunOS" ]; then
	USERID=`id -u`
else
	USERID=`/usr/xpg4/bin/id -u`
fi

if [ $USERID = 0 ]; then

	echo Checking for and Killing currently running Easy Darwin Streaming Server
	if [ `uname` = "FreeBSD" ]; then
		ps -ax | awk '/EasyDarwin/ {print $1}' | xargs kill -9  
		ps -ax | awk '/streamingadminserver.pl/ {print $1}' | xargs kill -9  
	fi

	if [ `uname` = "Linux" ]; then
		ps ax | awk '{print $1" " $5}' | awk '/EasyDarwin/ {print $1}' | xargs -r kill -9  
		ps ax | awk '/streamingadminserver.pl/ {print $1}' | xargs -r kill -9  
	fi

	if [ `uname` = "SunOS" -o `uname` = "IRIX" -o `uname` = "IRIX64" ]; then
		ps -aef | awk '/EasyDarwin/ {print $2}' | xargs -n 2 kill -9  
		ps -aef | awk '/streamingadminserver.pl/ {print $2}' | xargs -n 1 kill -9 
	fi

## REMOVED OLD VERSION ##

	echo Removing previous versions of Easy Darwin Streaming Server
	if [ -f /usr/local/sbin/EasyDarwin ]; then
		echo removing /usr/local/sbin/EasyDarwin
		rm -f /usr/local/sbin/EasyDarwin 
	fi
	
	if [ -f /usr/local/bin/PlaylistBroadcaster ]; then
		echo removing /usr/local/bin/PlaylistBroadcaster
		rm -f /usr/local/bin/PlaylistBroadcaster
	fi
	
	if [ -f /usr/local/bin/MP3Broadcaster ]; then
		echo removing /usr/local/bin/MP3Broadcaster
		rm -f /usr/local/bin/MP3Broadcaster
	fi
	
	if [ -f /usr/local/bin/qtpasswd ]; then
		echo removing /usr/local/bin/qtpasswd
		rm -f /usr/local/bin/qtpasswd
	fi

	if [ -f /usr/local/sbin/streamingadminserver.pl ]; then
		echo removing /usr/local/sbin/streamingadminserver.pl
		rm -f /usr/local/sbin/streamingadminserver.pl
	fi

	if [ -f /usr/local/bin/streamingadminserver.pl ]; then
		echo removing /usr/local/bin/streamingadminserver.pl
		rm -f /usr/local/bin/streamingadminserver.pl
	fi

	if [ -f /usr/local/bin/SpamPro ]; then
		echo removing /usr/local/bin/SpamPro
		rm -f /usr/local/bin/SpamPro
	fi

if [ -e StreamingLoadTool ]; then
	if [ -f /usr/local/bin/StreamingLoadTool ]; then
		echo removing /usr/local/bin/StreamingLoadTool
		rm -f /usr/local/bin/StreamingLoadTool
	fi
fi
	echo
	
## BACKUP OLD CONFIG FILES ##
	echo Backing up previous config files

	if [ -f /etc/streaming/streamingserver.xml ]; then
		echo backing up /etc/streaming/streamingserver.xml to /etc/streaming/streamingserver.xml.backup
		mv /etc/streaming/streamingserver.xml /etc/streaming/streamingserver.xml.backup
	fi

	if [ -f /etc/streaming/streamingadminserver.pem ]; then
		echo backing up /etc/streaming/streamingadminserver.pem to /etc/streaming/streamingadminserver.pem.backup
		mv /etc/streaming/streamingadminserver.pem /etc/streaming/streamingadminserver.pem.backup
	fi
	
	if [ -f /etc/streaming/qtusers ]; then
		echo backing up /etc/streaming/qtusers to /etc/streaming/qtusers.backup
		mv /etc/streaming/qtusers /etc/streaming/qtusers.backup
	fi

	if [ -f /etc/streaming/qtgroups ]; then
		echo backing up /etc/streaming/qtgroups to /etc/streaming/qtgroups.backup
		mv /etc/streaming/qtgroups /etc/streaming/qtgroups.backup
	fi
	
if [ -e StreamingLoadTool ]; then
	if [ -f /etc/streaming/streamingloadtool.conf ]; then
		echo backing up /etc/streaming/streamingloadtool.conf to /etc/streaming/streamingloadtool.conf.backup
		mv /etc/streaming/streamingloadtool.conf /etc/streaming/streamingloadtool.conf.backup
	fi
fi
	if [ -f /etc/streaming/relayconfig.xml ]; then
		echo backing up /etc/streaming/relayconfig.xml to /etc/streaming/relayconfig.xml.backup
		mv /etc/streaming/relayconfig.xml /etc/streaming/relayconfig.xml.backup
	fi

	echo

# Add the unprivileged user qtss as the server's run user
	echo "Creating unprivileged user to run the server = \"qtss\"."
    if [ $INSTALL_OS = "Linux" ]; then
        /usr/sbin/groupadd qtss > /dev/null 2>&1
        /usr/sbin/useradd -M qtss -g qtss > /dev/null 2>&1
    else
        /usr/sbin/groupadd qtss > /dev/null 2>&1
        /usr/sbin/useradd qtss > /dev/null 2>&1
    fi
	
## INSTALL NEW VERSION ##
    if [ ! -d /usr/local/sbin ]; then
            echo creating "/usr/local/sbin" directory
            mkdir -p /usr/local/sbin
    fi              
    if [ ! -d /usr/local/bin ]; then
            echo creating "/usr/local/bin" directory
            mkdir -p /usr/local/bin
    fi              

	echo copying "EasyDarwin" to "/usr/local/sbin/EasyDarwin"
	cp -f EasyDarwin /usr/local/sbin/
	
	
	echo copying "PlaylistBroadcaster" to "/usr/local/bin/PlaylistBroadcaster"
	cp -f ./PlaylistBroadcaster.tproj/PlaylistBroadcaster /usr/local/bin/
	
	echo copying "MP3Broadcaster" to "/usr/local/bin/MP3Broadcaster"
	cp -f ./MP3Broadcaster/MP3Broadcaster /usr/local/bin/
	
	echo copying "qtpasswd" to "/usr/local/bin/qtpasswd"
	cp -f ./qtpasswd.tproj/qtpasswd /usr/local/bin/

	# For now, do not copy modules as there are no supported dynamic modules
	# echo copying modules to "/usr/local/sbin/StreamingServerModules"
	if [ ! -d /usr/local/sbin/StreamingServerModules ]; then
		echo creating "/usr/local/sbin/StreamingServerModules" directory
		mkdir /usr/local/sbin/StreamingServerModules
	fi
	#cp -f StreamingServerModules/* /usr/local/sbin/StreamingServerModules/

	if [ -e /usr/local/sbin/StreamingServerModules/QTSSHomeDirectoryModule ]; then
		echo copying "createuserstreamingdir" to "/usr/local/bin/createuserstreamingdir"
		cp -f createuserstreamingdir $INSTALLROOT/usr/local/bin/
	fi
	
	if [ ! -d /etc/streaming ]; then
		echo creating "/etc/streaming" directory
		mkdir -p /etc/streaming
	fi
	
	if [ ! -e /etc/streaming/streamingserver.xml ]; then
		/usr/local/sbin/EasyDarwin -x
	fi
	
	chmod 600 /etc/streaming/streamingserver.xml
	chown qtss /etc/streaming/streamingserver.xml
	
	echo;echo copying "relayconfig.xml-Sample" to "/etc/streaming/relayconfig.xml-Sample"
	cp -f relayconfig.xml-Sample /etc/streaming/relayconfig.xml-Sample
	chmod 600 /etc/streaming/relayconfig.xml-Sample
	if [ -e /etc/streaming/relayconfig.xml ]; then
		chown qtss /etc/streaming/relayconfig.xml
	fi
	
	echo;echo copying "qtusers" to "/etc/streaming/qtusers"
	cp -f qtusers /etc/streaming/qtusers
	chmod 600 /etc/streaming/qtusers
	chown qtss /etc/streaming/qtusers

	echo;echo copying "qtgroups" to "/etc/streaming/qtgroups"
	cp -f qtgroups /etc/streaming/qtgroups
	chmod 600 /etc/streaming/qtgroups
	chown qtss /etc/streaming/qtgroups

	#echo;echo copying "streamingadminserver.pem" to "/etc/streaming/streamingadminserver.pem"
	#cp -f streamingadminserver.pem /etc/streaming/streamingadminserver.pem
	#chmod 400 /etc/streaming/streamingadminserver.pem

	if [ ! -d /var/streaming ]; then
		echo creating "/var/streaming" directory
		mkdir -p /var/streaming
	fi
	
	echo copying "readme.txt" to "/var/streaming/readme.txt"
	cp -f ./Documentation/readme.txt /var/streaming/readme.txt
	
	echo copying "3rdPartyAcknowledgements.rtf" to "/var/streaming/3rdPartyAcknowledgements.rtf"
	cp -f ./Documentation/3rdPartyAcknowledgements.rtf /var/streaming/3rdPartyAcknowledgements.rtf
	
	if [ ! -d /var/streaming/logs ]; then
		echo creating "/var/streaming/logs" directory
		mkdir -p /var/streaming/logs
	fi
	
	if [ ! -d /usr/local/movies ]; then
		echo creating "/usr/local/movies" directory
		mkdir -p /usr/local/movies
	fi
	
	if [ ! -d /var/streaming/playlists ]; then
		echo creating "/var/streaming/playlists" directory
		mkdir -p /var/streaming/playlists
	fi
	chmod 770 /var/streaming/playlists
	chmod 775 /usr/local/movies
	
    echo copying "Demo.mp4" into "/usr/local/movies/Demo.mp4"
    cp -f Demo.mp4 /usr/local/movies/
    
if [ -e StreamingLoadTool ]; then
	echo copying "StreamingLoadTool" to "/usr/local/bin/StreamingLoadTool"
	cp -f ./StreamingLoadTool/StreamingLoadTool /usr/local/bin/
	
	echo copying "streamingloadtool.conf" to "/etc/streaming/streamingloadtool.conf"
	cp -f ./StreamingLoadTool/streamingloadtool.conf /etc/streaming/
fi
		
	echo;echo Installation Complete

	# Setup for EasyDarwin
	# Prompts for a username and password
	# that can be used to administer the server
	
	echo;echo Easy Darwin Streaming Server Setup;echo
	
	# prompt the user to enter the admin username
	while [ "$username" = "" ]; do
		printf "In order to administer the Easy Darwin Streaming Server you must create an administrator user [Note: The administrator user name cannot contain spaces, or single or double quote characters, and cannot be more than 255 characters long].\n"
		
		printf "Please enter a new administrator user name: "
		read username
		if [ "$username" = "" ]; then
			echo ""
			echo "Error: No username entered!"
			echo ""
		fi
	done
	echo ""
	
	# prompt the user to enter the admin password
	while [ "$password" = "" ]; do
		printf "\nYou must also enter a password for the administrator user [Note: The administrator password cannot contain spaces, or quotes, either single or double, and cannot be more than 80 characters long].\n"

		printf "Please enter a new administrator Password: "
		stty -echo
		read password
		stty echo
		echo ""
		printf "Re-enter the new administrator password: "
		stty -echo
		read password1
		stty echo
		if [ "$password" = "" ]; then
			echo ""
			echo "Error: No password entered!"
			echo ""
		fi
		if [ "$password" != "$password1" ]; then
			echo ""
			echo "Error: passwords entered do not match!"
			echo ""
			password=""
		fi
	
	done
	echo ""
	
	# Add the new admin username to /etc/streaming/qtusers
	/usr/local/bin/qtpasswd -p $password $username
	
	# Add the new admin username to /etc/streaming/qtgroups
	# and delete the default admin username
	echo admin: $username > /etc/streaming/qtgroups.tmp
	mv /etc/streaming/qtgroups.tmp /etc/streaming/qtgroups
	
	# Remove the default admin username to /etc/streaming/qtusers
	/usr/local/bin/qtpasswd -F -d 'aGFja21l' > /dev/null
		
	chown -R -f qtss /etc/streaming/
	
	echo Setup Complete!
	
else

	echo "Unable to perform install"
	echo "You must be logged in as root to install Easy Darwin Streaming Server";echo
	exit 1
fi
